home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / comm / www / showurl.lha / showurl / source / main.c
C/C++ Source or Header  |  2001-03-23  |  5KB  |  238 lines

  1. /* -----------------------------------------------------------------------------
  2.  
  3.   Use remote.library to show a HTML page. Compile with DICE:
  4.  
  5.   dcc main.c -// -mRR -r -proto -3.0 -l reqtoolssr.lib -l //dlib/remotesr.lib -o ///c/showurl
  6.  
  7.   ------------------------------------------------------------------------------
  8. */
  9.  
  10. /// "includes"
  11.  
  12. #define Prototype extern
  13.  
  14. #include <stdio.h>
  15. #include <stdlib.h>
  16. #include <string.h>
  17. #include <ctype.h>
  18. #include <exec/exec.h>
  19. #include <exec/types.h>
  20. #include <workbench/workbench.h>
  21. #include <workbench/startup.h>
  22. #include <dos/dos.h>
  23. #include <clib/alib_protos.h>
  24. #include <clib/dos_protos.h>
  25. #include <clib/exec_protos.h>
  26. #include <clib/icon_protos.h>
  27. #include <clib/intuition_protos.h>
  28. #include <reqtools/include/reqtools.h>
  29. #include <reqtools/clib/reqtools_protos.h>
  30.  
  31. // remote.library includes
  32.  
  33. #include "//include/remote.h"
  34.  
  35. #include "//clib/remote_protos.h"
  36.  
  37. ///
  38. /// "prototypes"
  39.  
  40. Prototype int   main  (int, char **);
  41. Prototype int   wbmain(struct WBStartup *);
  42. Prototype UWORD Ask   (char *, char *, char *);
  43.  
  44. ///
  45. /// "globals"
  46.  
  47. UBYTE Version[] = "$VER: showurl 38.0 (" __COMMODORE_DATE__ ")";
  48.  
  49. struct Library *RemoteBase   = NULL;
  50. struct Library *ReqToolsBase = NULL;
  51.  
  52. ///
  53. /// "main"
  54.  
  55. /* ----------------------------------- main ------------------------------------
  56.  
  57.  DOS entry point
  58.  
  59. */
  60.  
  61. int
  62. main(argc, argv)
  63.  
  64. int    argc;
  65. char **argv;
  66. {
  67.     int error = 0;
  68.  
  69.     puts("showurl ©2001 Dietmar Eilert");
  70.  
  71.     if (RemoteBase = OpenLibrary("remote.library", 37))
  72.     {
  73.         // manually initialize remote.library (we want to see the error code)
  74.  
  75.         if (error = RemoteInit())
  76.         {
  77.             puts(RemoteError(error));
  78.         }
  79.         else {
  80.  
  81.             ULONG argArray[] = { 0 };
  82.  
  83.             struct RDArgs *rdArgs;
  84.  
  85.             // parse arguments
  86.  
  87.             if (rdArgs = ReadArgs("URL/A", argArray, NULL))
  88.             {
  89.                 // open file in browser
  90.  
  91.                 if (error = RemoteOpen("BROWSER", NULL, (UBYTE *)argArray[0], REMOTE_OPEN_ASYNC))
  92.                 {
  93.                     puts(RemoteError(error));
  94.                 }
  95.  
  96.                 FreeArgs(rdArgs);
  97.             }
  98.             else
  99.             {
  100.                 UBYTE buffer[256];
  101.  
  102.                 if (Fault(IoErr(), "showurl", buffer, sizeof(buffer)))
  103.  
  104.                     puts(buffer);
  105.  
  106.                 error = 20;
  107.             }
  108.         }
  109.  
  110.         CloseLibrary(RemoteBase);
  111.     }
  112.     else {
  113.  
  114.         error = 20;
  115.  
  116.         puts("showurl: remote.library not available");
  117.     }
  118.  
  119.     if (ReqToolsBase)
  120.  
  121.         CloseLibrary(ReqToolsBase);
  122.  
  123.     return(error);
  124. }   
  125.  
  126. /* ---------------------------------- wbmain -----------------------------------
  127.  
  128.  WB entry point
  129.  
  130. */
  131.  
  132. int
  133. wbmain(struct WBStartup *wbs)
  134. {
  135.     int error = 0;
  136.  
  137.     if (RemoteBase = OpenLibrary("remote.library", 37))
  138.     {
  139.         // manually initialize remote.library (we want to see the error code)
  140.  
  141.         if (error = RemoteInit())
  142.         {
  143.             Ask("showurl", RemoteError(error), "OK");
  144.         }
  145.         else {
  146.  
  147.             struct DiskObject *diskObject;
  148.  
  149.             if (wbs->sm_NumArgs > 1)
  150.             {
  151.                 if (diskObject = GetDiskObject(wbs->sm_ArgList[1].wa_Name))
  152.                 {
  153.                     UBYTE localfile[256], *url;
  154.  
  155.                     url = FindToolType(diskObject->do_ToolTypes, "URL");
  156.  
  157.                     if (url == NULL)
  158.                     {
  159.                         if (NameFromLock(GetProgramDir(), localfile, 256))
  160.                         {
  161.                             AddPart(localfile, wbs->sm_ArgList[1].wa_Name, 256);
  162.  
  163.                             strins(localfile, "file:///");
  164.  
  165.                             url = localfile;
  166.                         }
  167.                     }
  168.  
  169.                     if (url)
  170.                     {
  171.                         if (error = RemoteOpen("BROWSER", NULL, url, REMOTE_OPEN_ASYNC))
  172.  
  173.                             Ask("showurl", RemoteError(error), "OK");
  174.                     }
  175.  
  176.                     FreeDiskObject(diskObject);
  177.                 }
  178.                 else
  179.                     Ask("showurl", "Can not read icon", "OK");
  180.             }
  181.             else
  182.                 Ask("showurl", "No project icon selected", "OK");
  183.         }
  184.  
  185.         CloseLibrary(RemoteBase);
  186.     }
  187.     else {
  188.  
  189.         error = 20;
  190.  
  191.         Ask("showurl", "remote.library not available", "OK");
  192.     }
  193.  
  194.     if (ReqToolsBase)
  195.  
  196.         CloseLibrary(ReqToolsBase);
  197.  
  198.     return(error);
  199. }   
  200.  
  201. ///
  202. /// "misc"
  203.  
  204. /* -------------------------------------- Ask ----------------------------------
  205.  
  206.  Show requester and ask for a selection.
  207.  
  208. */
  209.  
  210. UWORD
  211. Ask(title, body, button)
  212.  
  213. char *title;
  214. char *body;
  215. char *button;
  216. {
  217.     UWORD result = 0;
  218.  
  219.     if (ReqToolsBase == NULL)
  220.  
  221.         ReqToolsBase = OpenLibrary("reqtools.library", 38);
  222.  
  223.     if (ReqToolsBase)
  224.     {
  225.          result = rtEZRequestTags(body, button, NULL, NULL, RT_Underscore, '_', RTEZ_ReqTitle,  title, TAG_DONE);
  226.     }
  227.     else {
  228.  
  229.         struct EasyStruct easyStruct = { sizeof(struct EasyStruct), 0, title, body, button };
  230.  
  231.         result = EasyRequestArgs(NULL, &easyStruct, NULL, NULL);
  232.     }
  233.  
  234.     return(result);
  235. }
  236.  
  237. ///
  238.